package manager.modulo.clientefornecedor.dao;

import java.sql.SQLException;
import manager.auxiliares.MensagemExcessao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedList;
import manager.principal.fonte.JanelaLogin;
import manager.interfaces.InterfaceDao;

/**
 * Esta classe será utilizada para cadastra a entidade user no banco de dados
 *
 * @author Thiago
 */
public class EnderecoClienteFornecedorDao implements InterfaceDao {

    private int idEndereco;
    private int idClienteFornecedor;

    /**
     * Inicializando as variáveis
     */
    public EnderecoClienteFornecedorDao() {
        idClienteFornecedor = 0;
        idEndereco = 0;
    }

    public EnderecoClienteFornecedorDao(int newIdPartner, int newIdAddress) {
        idClienteFornecedor = newIdPartner;
        idEndereco = newIdAddress;
    }

    public static int getIdEnderecoPorClienteFornecedor(int idPartner) {
        try {

            String sql = "SELECT id_endereco FROM end_client_forn WHERE id_cliente_fornecedor = ?";
            PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql);
            preparedStatement.setInt(1, idPartner);
            ResultSet resultSet = preparedStatement.executeQuery();
            int idAddress = 0;
            if (resultSet.first()) {
                idAddress = resultSet.getInt("id_endereco");
            }
            resultSet.close();
            preparedStatement.close();
            return idAddress;
        } catch (Exception e) {
            MensagemExcessao.mostrarMensagem(e, "Buscando Endereços");
            return 0;
        }
    }

    /**
     * Insere um usuário no banco
     */
    public void inserir() throws SQLException {
        String sql = "INSERT INTO end_client_forn (id_endereco,id_cliente_fornecedor) VALUES(?,?)";
        PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql);

        preparedStatement.setInt(1, idEndereco);
        preparedStatement.setInt(2, idClienteFornecedor);
        preparedStatement.executeUpdate();

        preparedStatement.close();
    }

    public void deletar() throws SQLException {
        String sql = "DELETE FROM end_client_forn WHERE id_endereco = ? AND id_cliente_fornecedor = ?";
        PreparedStatement preparedStatement = JanelaLogin.getConnection().prepareStatement(sql);

        preparedStatement.setInt(1, idEndereco);
        preparedStatement.setInt(2, idClienteFornecedor);
        preparedStatement.executeUpdate();

        preparedStatement.close();
    }

    public void atualizar() throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void buscar(int idSearch) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public LinkedList<String> buscar(String opcao, String buscado, boolean limite) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getIdEndereco() {
        return idEndereco;
    }

    public void setIdEndereco(int idEndereco) {
        this.idEndereco = idEndereco;
    }

    public int getIdClienteFornecedor() {
        return idClienteFornecedor;
    }

    public void setIdClienteFornecedor(int idClienteFornecedor) {
        this.idClienteFornecedor = idClienteFornecedor;
    }
}
